The cost of transmitting data from one location to another can be a function of number of bits transmitted per second. Typically, higher bit transfer rates are associated with increased cost. Thus, video data is usually compressed before being transmitted into a bit stream. FIG. 1a illustrates a bit stream of video data. A bit stream 7 can comprise a sequence header 8, a picture header 10, a macroblock (“MB”) header 12, MB coefficients 14 for the macroblock, and other MBs headers and coefficients (not shown). The MB header 12 includes control data and motion vectors for sub-blocks of the respective macroblock. Generally, efforts have been spent to reduce the bit rate of the bit stream 7 by reducing the number of motion vectors and the number of MB coefficients used for each of the MBs.
An encoder is a device capable of encoding (e.g., coding), and sometimes also decoding, digital media data. A decoder is a device capable of decoding digital media data. A codec is a device capable of coding and/or decoding digital media data. The term codec is derived from a combination of the terms code and decode, or the terms compress and decompress. A variety of codecs are commercially available. An encoder or codec, by encoding the digital media data, can reduce the number of bits required to transmit signals, which can thereby reduce associated transmission costs.
Certain video compression schemes can use a technique known as motion estimation as part of the encoding process to facilitate encoding video content. In many cases, consecutive video frames in a sequence of video frames can have similar content at different locations within the image frames due to the movement of an object(s) from one video frame to the next. Motion estimation techniques can take advantage of content similarities between consecutive video frames to more efficiently encode a video frame. For instance, an encoder, employing a region (block) based motion estimation technique, can use one block of a reconstructed previous video frame as a reference (e.g., predictor block) when encoding one block of a current video frame.
FIG. 1b illustrates a block diagram for encoding motion vectors of a video frame or field. Generally, frame data is inputted to a motion estimation block 16 to generate a motion vector for the block in the current video frame to indicate the location of the block in the reconstructed previous video frame that can be used as a predictor block for the block in current frame. Frame data can include the current video frame and one or more reference frames. An encoder 18 can then subtract the predictor block from the block in current video frame to form a residue block, and can code the residue block and the motion vector, rather than the original block of the current frame. This can thereby make the encoding process and decoding process more efficient.
For video compression schemes that use motion estimation, the bits used to encode motion vectors can make up a significant portion of compressed data. Therefore, it is desirable to provide new methods and systems for merging several motion vectors for encoding to improve the overall efficiency of video compression.